home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
falcon
/
programm.ing
/
falclib2.lzh
/
ROUTS
/
DOC.TXT
< prev
next >
Wrap
Text File
|
1994-08-22
|
11KB
|
441 lines
Devpac Falcon Library
Manual
Following are short descriptions of all included routines. Most are
subroutines and should be called with 'bsr' or 'jsr' unless the word
macro follows the routine name in which case it is a macro. If a
routine says 'destroys a lot' then you should save all the registers
you are using except a7 which is never ruined. Some routine descriptions
even contains an example, so hopefully there will be no problems
understanding them.
*
* CACHE.S
*
* Cache equates. You'll need devpac 3 for this one I think.
* Here they are:
*
* ENABLE_CACHE EQU 1 ; Enable instruction cache
* FREEZE_CACHE EQU 2 ; Freeze instruction cache
* CLEAR_INST_CACHE_ENTRY EQU 4 ; Clear instruction cache entry
* CLEAR_INST_CACHE EQU 8 ; Clear instruction cache
* INST_BURST_ENABLE EQU 16 ; Instruction burst enable
* ENABLE_DATA_CACHE EQU 256 ; Enable data cache
* FREEZE_DATA_CACHE EQU 512 ; Freeze data cache
* CLEAR_DATA_CACHE_ENTRY EQU 1024 ; Clear data cache entry
* CLEAR_DATA_CACHE EQU 2048 ; Clear data cache
* DATA_BURST_ENABLE EQU 4096 ; Instruction burst enable
* WRITE_ALLOCATE EQU 8192 ; Write allocate
*
* ex. move.l #ENABLE_CACHE+ENABLE_DATA_CACHE+WRITE_ALLOCATE,d0
* movec d0,CACR ; turns on the caches
*
*
* CLS.S
*
* @cls???
* clears ??? bytes.
* In a0.l=start address
* (destroys a lot)
*
* ??? supported: 184320 (384*240*16bp)
* 92160 (384*240*8bp)
* 32000 (st modes)
* ex. bsr @cls92160
*
*
* CONVPAL1.S
*
* @convert_stpal
*
* Convert an old st colour value to a new falcon one
*
* In d0.w=old st colour
* Out d0.l=falcon colour
* (destroys d1-d3)
*
*
* COOKIE.S
*
* @getcookie
*
* Finds and returns a Cookie. Supervisor only!
*
* In d1.l=Cookie name
* Out d0.l=Cookie value or -1
* (destroys a0)
*
*
* DSPMOD.S
*
* @dsp_play
*
* Sets interupts and plays some soundtracker music. Modules mustn't have
* more than 4 voices. Supervisor only.
*
* In a0.l=Module adr.
* (destroys a lot)
*
* @dsp_stop
*
* Stops playing the music and restores interupts.
* Supervisor only.
* (destroys a lot)
*
*
* EXIT.S
*
* @exitifspace macro
* branches to exit if space has been pressed. Supervisor only!
* (destroys nothing)
*
*
* GEM.S
*
* @gemdos macro
* In #functionnbr, #stackcorrection
* ex. @gemdos 1,2 ;waits for a key
*
* @xbios macro
* In #functionnbr, #stackcorrection
* ex. @xbios 37,2 ;waits for vsync
*
* @gem macro
* In #functionnbr, #trapnbr, #stackcorrection
* ex. @gem 1,1,2 ;waits for a key
*
*
* GETPAR.S (include right after releasem.s)
*
* Gets all parameters sent to the program.
* Must be directly after releasem.
*
* Out a0.l=Address where the parameters are kept
*
* ex. include releasem.s release unused memory, this is line nr 1 of the program
* include getpar.s get adr. where the parameters are kept
* move.l a0,paradr save the result
*
* paradr ds.l 1
*
*
* GORAUD.S
*
* @goraud
*
* Draw a goraud shaded polygon in true colour.
* There's no clipping so don't draw too large polygons.
* Call @initgoraud once before using this one!
*
* In a1.l=screenadr
* a2.l=adr to colourtable
* new_crds=following table: [x,y,i]*nbr_of_points
* d6.w=nbr. of points
* xres equ horizontal resolution
* (destroys a lot)
*
* The colourtable consists of 32 words, each a true colour value.
* word nr 0 is the darkest and word nr 31 the brightest. This is
* followed by 16 empty words.
* Supplied colours: g_lightred, g_green, g_brown, g_white
* new_crds is a table that consist of a pair of coordinates followed
* by a brightnes factor. The brightnes factor is a number between 0
* and #$7fff.
*
* ex. xres equ 384 overscaned lowres screen
* bsr @initgoraud call once only
*
* move.l scradr,a1 screenaddress
* move.l #g_red,a2 I want a red poly
* moveq #4,d6 four points
* bsr @goraud draw it
*
* new_crds dc.w 10,10,0 a dark point
* dc.w 200,20,$7fff a bright point
* dc.w 140,140,$7fff/2
* dc.w 25,50,$7fff/4
*
*
* @initgoraud
* This subroutine must be called once before using @goraud.
*
*
* HLINE1.S
*
* @drawhline1
*
* Draws a horizontal line in 8 bitplane mode. Clipping is implemented.
* This routine only uses the six first bitplanes.
*
* In a0.l=screenadr d0=xmin d1=xmax
* d2.l - d4.l =6 bitplanes
* xres equ horizontal screen resolution
* (destroys d0-d7/a0-a1)
*
* ex. move.l screen+xres*50,a0 ypos=50
* move #-34,d0 left xcord
* move #67,d1 right xcord
* move.l #$0,d2 don't set bitplane 0 or 1
* move.l #$0000ffff,d3 set bitplane 3
* move.l #$ffffffff,d4 set bitplane 4 and 5
* bsr @drawhline1
*
*
* ICE.S
*
* @icedecrunch
*
* Checks if the data is icepacked and possibly unpacks it.
*
* In a0.l=Data adr.
*
*
* LOADFILE.S
*
* @loadfile
*
* Loads a file and possibly unpacks it (ice 2.40).
*
* In a5.l=adr. to a filename terminated by zero
* a6.l=dest.
* d7.l=filelength
* (destroys a lot)
*
*
* RELEASEM.S
*
* This routine releases all memory not needed by the program.
* Include this rout at the top of your program and the memory
* will be relesed properly.
*
* ex. include releasem.s release unused memory, this is line nr 1 of the program
*
*
* SAVEFILE.S
*
* @savefile
*
* Saves data as a file.
*
* In a5.l=adr. till nollavslutat filnamn
* a6.l=source
* d7.l=fillängd
* (destroys a lot)
*
*
* SETFV.S
*
* @setfv
* Sets the falcon video registers. The data that is
* written to the video registers must be a .FV (Falcon Video)
* file. Supervisor only.
* In a0.l=adr. to Falcon Video data
* Out d0.l: 0=no error -1=error, no .FV data
* (destroys d0-d2/a0-a2)
*
* @savefv
* Saves the falcon video registers to memory. Supervisor only.
* (destroys a0-a1)
*
* @resorefv
* Restores the saved falcon video registers. Supervisor only.
* (destroys d0-d2/a0-a2)
*
*
* SETVIDEO.S
*
* @setvideo
* Save and set resolution.
* In d7.w=mode
* modeequates: vertflag, stmodes, overscan, pal, vga, col80, bps1-16
* (xbios, destroys d0-d2/a0-a2)
* ex. move #pal+bps16,d7
* bsr @setvideo
*
* @restorevideo
* Restores the saved resolution.
* (xbios, destroys d0-d2/a0-a2)
*
* @setvadr
* Sets the physical and logical screenadress.
* In d0.l=screenadr.
* (xbios, destroys d0-d2/a0-a2)
*
* @savevadr
* Saves the current screenadr.
* (xbios, destroys d0-d2/a0-a2)
*
* @restorevadr
* Restores the saved screenadr.
* (xbios, destroys d0-d2/a0-a2)
*
*
* SHRTONES.S
*
* @super
* enter supervisor mode (gemdos($20), destroys d0-d1/a0-a1)
*
* @user
* returns to user mode (gemdos($20), destroys d0-d1/a0-a1)
*
* @waitvbl
* waits for a vertical blank (xbios(#37), destroys d0-d2/a0-a2)
*
* @waitkey
* waits for a keypress, no echo (gemdos(#7), destroys a0)
* Out d0.b=ascii value
*
* @exitifkey
* quits if a key has been pressed
* (gemdos(#11,#7,#0), destroys a0)
*
* @quit
* terminate process (gemdos(#0))
*
*
* TIMER.S
*
* @colour[#value.l] macro
* sets backround colour to value. Supervisor only!
* (destroys nothing)
*
*
* TRIG.S
*
* All results are taken from a 1440 entries large lookup table.
*
* @sin
* Returns the sine of an angle.
* In d0.w=angle in degrees with six decimal bits (the legal values are 0-$59ff or 0-359.999 degrees)
* Out d1.w=sin(angle), a word with one sign bit and 15 decimal bits.
* (destroys d0/a0)
*
* @cos
* Returns the cosine of an angle.
* In d0.w=angle in degrees with six decimal bits (the legal values are 0-$59ff or 0-359.999 degrees)
* Out d1.w=sin(angle), a word with one sign bit and 15 decimal bits.
* (destroys d0/a0)
*
* ex. move #180*64,d0 ; make it 180 degrees
* bsr @sin ; d1 will now contain 0
* move #180*64,d0 ; d0 is destroyed so we had better enter the value again
* bsr @cos ; d1 will now contain -1 ($8000)
*
*
* WINDOW.S
* (vdilib.i & aeslib.i must be included at the end of the program)
*
* @createwindow
*
* Creates and opens a simple gem window.
*
* In wtype equ %info move full close name
*